#include <cstdio>

const int N = 500005;
int n = 0, deg[N];
char s[11];
int fa[N];
int tot = 1;

struct node {
  int ch[26], id;
} t[1000005];

inline int id(char *s) {
  int cur = 0, c;
  while (*s) {
    c = *s++ - 'a';
    if (!t[cur].ch[c]) t[cur].ch[c] = ++tot;
    cur = t[cur].ch[c];
  }
  if (!t[cur].id) t[cur].id = ++n;
  return t[cur].id;
}

int find(int x) { return fa[x] == x ? x : fa[x] = find(fa[x]); }

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("testdata.in", "r", stdin);
  freopen("testdata.out", "w", stdout);
#endif
#ifndef LOCAL
  freopen("P1333 瑞瑞的木棍.in", "r", stdin);
  freopen("P1333 瑞瑞的木棍.out", "w", stdout);
#endif
#endif

  for (int i = 1; i < N; ++i) fa[i] = i;
  int x, y, cnt = 0;
  while (scanf("%s", s) != EOF) {
    x = id(s);
    scanf("%s", s);
    y = id(s);
    int fx = find(x), fy = find(y);
    if (fx != fy) ++cnt;
    fa[fx] = fy;
    ++deg[x], ++deg[y];
  }
  if (cnt < n - 1) {
    printf("Impossible");
    return 0;
  }
  cnt = 0;
  for (int i = 1; i <= n; ++i)
    if ((deg[i] & 1) && ++cnt > 2) {
      printf("Impossible");
      return 0;
    };
  printf("Possible");
  return 0;
}